package com.hongawen.designmode.创建型.单例模式.懒汉式;

/**
 * @author hongawen
 */
public class SingleLHan {

    private volatile static SingleLHan instance;

    private SingleLHan() {

    }

    /**
     * 双重检查，需要搭配volatile关键字修饰变量
     *
     * volatile关键字可以禁止指令重排序，保证线程安全,下一个线程的读，确保上个线程写操作没有完成之后再执行
     *
     */
    public static SingleLHan getInstance() {
        if (instance == null) {
            synchronized (SingleLHan.class) {
                if (instance == null) {
                    instance = new SingleLHan();
                }
            }
        }
        return instance;
    }

}
